package com.jtcl.netty.service;

import io.netty.channel.Channel;

import javax.swing.text.Document;

/**
 * @author sjt
 * @since 2021-02-24 13:06
 */
public interface MessageService {

    /**
     * 报文 解密、解压操作
     *
     * @param msg
     * @return java.lang.String
     * @author 施锦庭
     * @since 2021-02-24 13:08
     **/
    String decrypt(String msg);

    /**
     * 报文 压缩、加密操作
     *
     * @param msg
     * @return java.lang.String
     * @author 施锦庭
     * @since 2021-02-24 13:08
     **/
    String encrypt(String msg);

    /**
     * 报文拆包
     *
     * @param msg
     * @param channel
     * @return void
     * @author 施锦庭
     * @since 2021-02-24 13:08
     **/
    void unpack(String msg, Channel channel);

    /**
     * 业务处理
     *
     * @param msg
     * @param channel
     * @return void
     * @author 施锦庭
     * @since 2021-02-24 13:09
     **/
    void dealPact(String msg, Channel channel);

    /**
     * 客户端断开连接业务处理
     *
     * @param channel
     * @return void
     * @author 施锦庭
     * @since 2021-02-24 13:10
     **/
    default void clientOffline(Channel channel) {

    }


    /**
     * 客户端完成连接业务处理
     *
     * @param channel
     * @return void
     * @author 施锦庭
     * @since 2021-02-24 13:10
     **/
    default void clientOnline(Channel channel) {

    }


    /**
     * 向指定客户端发送消息
     *
     * @param document
     * @param channel
     * @return void
     * @author 施锦庭
     * @since 2021-02-24 13:10
     **/
    void sendMessage(Document document, Channel channel);

    /**
     * 客户端异常处理
     *
     * @param ctx
     * @param cause
     * @return void
     * @author 施锦庭
     * @since 2021-02-24 16:04
     **/
    default void exceptionCaught(Throwable cause) {

    }

}
